home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / PRUS101.ZIP / FDRIVES.DEC < prev    next >
Text File  |  1994-12-19  |  9KB  |  219 lines

  1. { FDRIVES.DEC - include file for the PRUSSG unit FDOS to speed up and enhance
  2.   drive related operations under DOS / interface part }
  3.  (***************************************************************************
  4.  
  5.          RELEASE 1.00 - as first contained in the file PRUS101.LZH
  6.                 by Orazio Czerwenka, 2:2450/540.55, GERMANY
  7.  
  8.                --------------------------------------------
  9.                 organized for Fido's PASCAL related echoes    
  10.                --------------------------------------------
  11.  
  12.      09/06/1994 to --/--/---- by Orazio Czerwenka, 2:2450/540.55, GERMANY
  13.  
  14.  
  15.  
  16.            As far as third party copyrights are not violated this
  17.            source code is hereby placed to the public domain. Use
  18.            it whatever way you want, but use AT YOUR OWN RISK.
  19.  
  20.            In case you should modify the source rather send your
  21.            modifications to the unit's current organizer (see above for
  22.            NM address) than to spread it on your own. This will help to
  23.            keep the unit updated and grant a certain standard to all
  24.            other users as well.
  25.  
  26.            The unit is currently still under work. So it might greatly
  27.            benefit of your participation.
  28.  
  29.            Those who contributed to the following piece of source,
  30.            listed in alphabethical order:
  31.         ================================================================
  32.            Orazio Czerwenka, Andrew Eigus, Peter Schuette ...
  33.         ================================================================
  34.            YOUR NAME WILL APPEAR HERE IF YOU CONTRIBUTE USEFUL SOURCE.
  35.  
  36.            Credits in your own programs are as welcome as unnecessary.
  37.  
  38.          Special thanks to Andrew Eigus (2:5100/33, Latvia) who greatly
  39.           supported this piece of source by contributing a special PD
  40.                          version of his Unit ENHDOS.
  41.  
  42.  ***************************************************************************)
  43.  
  44. CONST
  45. { -------------------------------------------------------------------------- }
  46.  
  47.   { GetDriveType return values }
  48.  
  49.   dtError      = $00; { Bad drive }
  50.   dtFixed      = $01; { Fixed drive }
  51.   dtRemovable  = $02; { Removable drive }
  52.   dtRemote     = $03; { Remote (network) drive }
  53.   dtCDROM      = $04; { CD-ROM V2.00+ drive }
  54.   dtCompressed = $05; { Compressed drive }
  55.  
  56. { -------------------------------------------------------------------------- }
  57.  
  58. TYPE
  59. { -------------------------------------------------------------------------- }
  60.  
  61.   { Disk information block structure }
  62.  
  63.   TDiskParamBlock = record
  64.     Drive : byte;             { Disk drive number (0=A, 1=B, 2=C...) }
  65.     SubunitNum : byte;        { Sub-unit number from driver device header }
  66.     SectSize : word;          { Number of bytes per sector }
  67.     SectPerClust : byte;      { Number of sectors per cluster -1
  68.                                 (max sector in cluster) }
  69.     ClustToSectShft : byte;   { Cluster-to-sector shift }
  70.     BootSize : word;          { Reserved sectors (boot secs; start of root dir }
  71.     FATCount : byte;          { Number of FATs }
  72.     MaxDir : word;            { Number of directory entries allowed in root }
  73.     DataSect : word;          { Sector number of first data cluster }
  74.     Clusters : word;          { Total number of allocation units (clusters)
  75.                                 +2 (number of highest cluster) }
  76.     FATSectors : byte;        { Sectors needed by first FAT }
  77.     RootSect : word;          { Sector number of start of root directory }
  78.     DeviceHeader : pointer;   { Address of device header }
  79.     Media : byte;             { Media descriptor byte }
  80.     AccessFlag : byte;        { 0 if drive has been accessed }
  81.     NextPDB : pointer         { Address of next DPB (0FFFFh if last) }
  82.   end;
  83.   PDiskParamBlock = ^TDiskParamBlock;
  84.  
  85. { -------------------------------------------------------------------------- }
  86.  
  87.   { Disk allocation data structure }
  88.  
  89.   PDiskAllocInfo = ^TDiskAllocInfo;
  90.   TDiskAllocInfo = record
  91.     FATId : byte;             { FAT Id }
  92.     Clusters : word;          { Number of allocation units (clusters) }
  93.     SectPerClust : byte;      { Number of sectors per cluster }
  94.     SectSize : word           { Number of bytes per sector }
  95.   end;
  96.  
  97. { -------------------------------------------------------------------------- }
  98.  
  99. function GetVerify : boolean;
  100. { GETVERIFY - DOS service function
  101.   Description: Returns the state of the verify flag in DOS.
  102.                When off (False), disk writes are not verified.
  103.                When on (True), all disk writes are verified to insure proper
  104.                writing; fn=54h
  105.   Returns: State of the verify flag }
  106.  
  107. { -------------------------------------------------------------------------- }
  108.  
  109. function SetVerify(Verify : boolean) : boolean;
  110. { SETVERIFY - DOS service function
  111.   Description: Sets the state of the verify flag in DOS; fn=2Eh
  112.   Returns: Previous state of the verify flag }
  113.  
  114. { -------------------------------------------------------------------------- }
  115.  
  116. function GetCurDisk : byte;
  117. { GETCURDISK - DOS disk service function
  118.   Description: Retrieves number of disk currently being active; fn=19h
  119.   Returns: Default (current, active) disk number (0=A,1=B,2=C,3=D) }
  120.  
  121. { -------------------------------------------------------------------------- }
  122.  
  123. function SetCurDisk(Drive : byte) : byte;
  124. { SETCURDISK - DOS disk service function
  125.   Description: Sets current (default/active) drive; fn=0Eh
  126.   Returns: Number of disks in the system }
  127.  
  128. { -------------------------------------------------------------------------- }
  129.  
  130. procedure GetDriveAllocInfo(Drive : byte; var Info : TDiskAllocInfo);
  131. { GETDRIVEALLOCINFO - DOS disk service function
  132.   Description: Retrieves disk allocation information; fn=1Ch
  133.   Retrieves Info structure }
  134.  
  135. { -------------------------------------------------------------------------- }
  136.  
  137. function GetDPB(Drive : byte; var DPB : TDiskParamBlock) : integer;
  138. { GETDPB - DOS disk service function (undocumented)
  139.   Description: Returns a block of information that is useful for applications
  140.                which perform sector-level access of disk drives supported by
  141.                device drivers; fn=32h
  142.   Returns: 0 if successful, negative dosrInvalidDrive error code otherwise
  143.   Remarks: Use 0 for default drive }
  144.  
  145. { -------------------------------------------------------------------------- }
  146.  
  147. function DiskSize(Drive : byte) : longint;
  148. { DISKSIZE - DOS disk service function
  149.   Description: Retrieves total disk size; fn=36h
  150.   Returns: Total disk size in bytes if successful, negative dosrInvalidDrive
  151.            error code otherwise
  152.   Remarks: Use 0 for default drive }
  153.  
  154. { -------------------------------------------------------------------------- }
  155.  
  156. function DiskFree(Drive : byte) : longint;
  157. { DISKFREE - DOS disk service function
  158.   Description: Retrieves amount of free disk space; fn=36h
  159.   Returns: Amount of free disk space in bytes if successful,
  160.            negative dosrInvalidDrive error code otherwise
  161.   Remarks: Use 0 for default drive }
  162.  
  163. { -------------------------------------------------------------------------- }
  164.  
  165. function IsFixedDrive(Drive : byte) : boolean;
  166. { ISFIXEDDRIVE - DOS disk service function
  167.   Description: Ensures whether the specified disk is fixed or removable;
  168.                fn=4408h
  169.   Returns: True, if the disk is fixed, False - otherwise
  170.   Remarks: Use 0 for default (current) drive }
  171.  
  172. { -------------------------------------------------------------------------- }
  173.  
  174. function IsNetworkDrive(Drive : byte) : boolean;
  175. { ISNETWORKDRIVE - DOS disk service function
  176.   Description: Ensures whether a specified disk drive is a network drive;
  177.                fn=4409h
  178.   Returns: True if drive is a network drive, False if it's a local drive
  179.   Remarks: Use 0 for detecting the default (current) drive }
  180.  
  181. { -------------------------------------------------------------------------- }
  182.  
  183. function IsCDROMDrive(Drive : byte) : boolean;
  184. { ISCDROMDRIVE -
  185.   Returns True if a specified drive is a CD-ROM drive, False - if not }
  186.  
  187. { -------------------------------------------------------------------------- }
  188.  
  189. function IsCompressedDrive(Drive : byte) : boolean;
  190. { ISCOMPRESSEDDRIVE-
  191.   Detects whether a specified drive is a compressed drive; Returns
  192.   True if drive is compressed, False - if not; Drives: 0=A,1=B,2=C... }
  193.  
  194. { -------------------------------------------------------------------------- }
  195.  
  196. function GetDriveType(Drive : byte) : byte;
  197. { GETDRIVETYPE - Disk service function
  198.   Description: Detects type for a specified drive
  199.   Returns: One of (dt) constants (see const section)
  200.   Remarks: 0=detect current (default),1=A,2=B,3=C... }
  201.  
  202. { -------------------------------------------------------------------------- }
  203.  
  204. function LogicalDrives : string;
  205. { LOGICALDRIVES -
  206.   reports all existing logical drives within a string, e.g. "ABCEG" }
  207.  
  208. { -------------------------------------------------------------------------- }
  209.  
  210. function DriveExists(drive: char) : boolean;
  211. { DRIVEEXISTS -
  212.   reports FALSE for an invalid drive, TRUE if the specified drive does
  213.   exist in LOGICALDRIVES }
  214.  
  215. { -------------------------------------------------------------------------- }
  216.  
  217. {
  218.  internal comments and remarks can be found in FDRIVES.INC
  219. }